package com.xzgj.fmmall.dao;

import com.xzgj.fmmall.entity.Category;
import com.xzgj.fmmall.generator.GeneratorDAO;
import com.xzgj.fmmall.vo.CategoryVO;

import java.util.List;

public interface CategoryMapper extends GeneratorDAO<Category> {

    //1.使用 连接查询 实现分类查询0000000-

    /**
     *--- 查询类别信息
     *--- c1  c2  c3
     *--- 只查询一级分类
     * --- select *from category where category_level=1;
     *--- select *from c1
     *
     *--- select *from c1
     *          inner join c2
     *          on c2.parent_id = c1.category_id
     *          inner join c3
     *          on c3.parent_id = c2.category_id
     *
     * 方案一，一次性查询三级分类
     * 优点：只需要一次查询，根据一级分类显示二级分类时响应速度较快
     * 缺点：数据库查询效率较低，页面首次加载的速度也相对较慢
     *
     * @return
     */
    public List<CategoryVO> selectAllCategories ();

    //2.使用 子查询 ，定义同1.一样，实现不同

    /**
     * 方案二，先查询一级分类，用户点击/鼠标移动到一级分类，动态加载二级分类
     * 优点：数据库查询效率较高，页面首次加载速度提高
     * 缺点：需要多次连接数据库
     * @param parentId
     * @return
     */
    public List<CategoryVO> selectChildrenCategoriesByParentId(int parentId);
}
